package com.hr.service;

import com.hr.domain.vo.UserHouseDetails;

import java.util.List;

public interface RedisHouseService {

    /**
     * 记录房源详情点击量
     * @param houseId 房源ID
     */
    void clickHouseDetailsViews(Long houseId);

    /**
     * 判断房源是否为热门房源
     * @param houseId 房源ID
     * @return 是否为热门房源
     */
    boolean isHotHouse(Long houseId);

    /**
     * 获取热门房源列表
     * @param count 获取数量
     * @return 热门房源ID列表
     */
    List<Long> getHotHouseIds(int count);

    /**
     * 从缓存获取房源详情
     * @param houseId 房源ID
     * @param userId 用户ID，用于判断是否收藏
     * @return 房源详情
     */
    UserHouseDetails getHouseDetailsFromCache(Long houseId, Long userId);

    /**
     * 将房源详情存入缓存
     * @param houseDetails 房源详情
     * @param expireSeconds 过期时间(秒)
     */
    void saveHouseDetailsToCache(UserHouseDetails houseDetails, long expireSeconds);

    /**
     * 清除房源缓存
     * @param houseId 房源ID
     */
    void clearHouseCache(Long houseId);

    /**
     * 清除所有热门房源缓存
     */
    void clearHotHouseCache();
    /**
     * 构建房屋详情
     * @param houseId 房源ID
     * @param userId 用户ID
     * @return 房源详情
     */
    UserHouseDetails buildHouseDetails(Long houseId, Long userId);

}

